//package com.yy.controller;
//
//import com.yy.pojo.User;
//import com.yy.pojo.File;
//import com.yy.service.FileService;
//import org.apache.commons.io.FilenameUtils;
//import org.apache.commons.io.IOUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.util.ResourceUtils;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.multipart.MultipartFile;
//import org.springframework.web.servlet.mvc.support.RedirectAttributes;
//import javax.servlet.ServletOutputStream;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import javax.xml.transform.Result;
//import java.io.*;
//import java.net.URLEncoder;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.List;
//import java.util.UUID;
//
//@Controller
//@RestController
//@RequestMapping("/file")
//public class FileController {
//
//    @Autowired
//    private FileService fileService;
//
//    /**
//     * 设置固定的日期格式
//     */
//    SimpleDateFormat sdf =new SimpleDateFormat("/yyyy/MM/dd/");
//
//    @GetMapping("/getFileList")
//    public List<File> getFileList(){
//        List<File> fileList = fileService.getFileList();
//        for (File file : fileList){
//            System.out.println(file);
//        }
//        return fileList;
//    }
//
//    @GetMapping("/showAll/{userId}")
//    public List<File> getFilesByUserId(@PathVariable("userId") String userId){
//        List<File> filesByUserId = fileService.getFilesByUserId(userId);
//        for (File file : filesByUserId){
//            System.out.println(file);
//        }
//        return filesByUserId;
//    }
//
////    @DeleteMapping("/deleteDpt/{dptId}")
////    public int deleteDpt(@PathVariable("dptId") String dptId){
////        return dptService.deleteDpt(dptId);
////    }
////
//    /**
//     * 登录情况下的showAll
//     */
//    @GetMapping("/showAll")
//    public String findAll(HttpSession session, Model model){
//        //在登入的session中获取Id
//        User user = (User) session.getAttribute("user");
//        List<File> files = fileService.getFilesByUserId(user.getUid());
//        model.addAttribute("files",files);
//        return "showAll";
//    }
//
////-------------------------------------------------------------------
//    /**
//     * 上传文件的处理 并保持文件信息保存到数据库
//     */
////
////    private  final static String rootPath = "D:/文件/";
////    @RequestMapping("/upload")
////    public Object uploadFile(MultipartFile[] multipartFiles){
////        File fileDir = new File(rootPath);
////        if (!fileDir.exists() && !fileDir.isDirectory()) {
////            fileDir.mkdirs();
////        }
////        try {
////            if (multipartFiles != null && multipartFiles.length > 0) {
////                for(int i = 0;i<multipartFiles.length;i++){
////                    try {
////                        //以原来的名称命名,覆盖掉旧的，这里也可以使用UUID之类的方式命名，这里就没有处理了
////                        String storagePath = rootPath+multipartFiles[i].getOriginalFilename();
////                        System.out.println("上传的文件：" + multipartFiles[i].getName() + "," + multipartFiles[i].getContentType() + "," + multipartFiles[i].getOriginalFilename()
////                                +"，保存的路径为：" + storagePath);
////                        // 3种方法： 第1种
//////                        Streams.copy(multipartFiles[i].getInputStream(), new FileOutputStream(storagePath), true);
////                        // 第2种
//////                        Path path = Paths.get(storagePath);
//////                        Files.write(path,multipartFiles[i].getBytes());
////                        // 第3种
////                        multipartFiles[i].transferTo(new File(storagePath));
////                    } catch (IOException e) {
////                        e.printStackTrace();
////                    }
////                }
////            }
////
////        } catch (Exception e) {
////            e.printStackTrace();
////        }
////        //前端可以通过状态码，判断文件是否上传成功
////        return ResultUtil.result(EnumCode.OK.getValue(),"文件上传成功");
////    }
//
//    @PostMapping("/upload")
//    public String upload(MultipartFile aaa, HttpSession session, RedirectAttributes attributes) throws IOException {
//
//        if (aaa.getContentType().equals("application/octet-stream")){
//            System.out.println(1);
//            attributes.addFlashAttribute("errorMessage","不能上传空文件！");
//        }else {
//            //获取当前登入的对象
//            User user = (User) session.getAttribute("user");
//
//            //获取文件的原始名称
//            String oldFileName = aaa.getOriginalFilename();
//
//            //获取文件的后缀
//            String extension = "." + FilenameUtils.getExtension(aaa.getOriginalFilename());
//
//            //生成新的文件名称
//            String newFileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + UUID.randomUUID().toString().replace("-","").substring(6) + extension;
//
//            //获取文件大小
//            long size = aaa.getSize();
//
//            //文件类型
//            String type = aaa.getContentType();
//
//            //处理根据日期生成目录
//            String realPath = ResourceUtils.getURL("classpath:").getPath() + "/static/files";
//            String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
//            String dateDirPath = realPath + "/" + format;
//            java.io.File dataDir = new java.io.File(dateDirPath);
//            if (!dataDir.exists()){
//                dataDir.mkdirs();
//            }
//
//            //处理文件上传
//            aaa.transferTo(new java.io.File(dataDir,newFileName));
//
//
//            File file=new File();
//            file.setOldFileName(oldFileName);
//            file.setNewFileName(newFileName);
//            file.setExt(extension);
//            file.setFileSize(String.valueOf(size));
//            file.setFileType(type);
//            file.setFilePath("/files/"+format);
//            file.setUserId(user.getUid());
//
//            //将文件存入数据库
//            fileService.SaveFile(file);
//        }
//        return "upload ok";
//    }
//
//    /**
//     * 文件下载
//     */
//    @GetMapping("/download")
//    public void download(String uid,String openStyle,HttpServletResponse response) throws IOException {
//        //获取文件信息
//        File file = fileService.getFilesById(uid);
//        //判断用户是在线打开还是下载
//        openStyle = openStyle == null ? "attachment" : openStyle;
//        if ("attachment".equals(openStyle)){
//            //更新文件下载次数
//            file.setDownCounts(file.getDownCounts()+1);
//            fileService.update(file);
//        }
//        //根据文件信息中文件的名字和文件存储的路径获取文件输入流
//        String realpath = ResourceUtils.getURL("classpath:").getPath() + "/static" + file.getFilePath();
//        //获取文件输入流
//        FileInputStream is = new FileInputStream(new java.io.File(realpath, file.getNewFileName()));
//        //附件下载
//        response.setHeader("content-disposition",openStyle+";fileName="+ URLEncoder.encode(file.getOldFileName(),"UTF-8"));
//        //获取响应输出流
//        ServletOutputStream os = response.getOutputStream();
//        //文件拷贝
//        IOUtils.copy(is,os);
//        IOUtils.closeQuietly(is);
//        IOUtils.closeQuietly(os);
//    }
//
//    //删除文件信息
//    @GetMapping("/delete")
//    public String delete(String uid) throws FileNotFoundException {
//        //根据Id查询信息
//        File file = fileService.getFilesById(uid);
//
//        //删除文件
//        String realpath = ResourceUtils.getURL("classpath:").getPath() + "/static" + file.getFilePath();
//        java.io.File file1 = new java.io.File(realpath, file.getNewFileName());
//        if (file1.exists()){
//            file1.delete();//立即删除
//        }
//
//        //删除数据库中的纪律
//        fileService.delete(uid);
//        return "delete ok";
//    }
//    //-------------------------------------
//
//
////
////    // 将 yml 中的自定义配置注入到这里
////    @Value("${gorit.file.root.path}")
////    private String filePath;
////    // 日志打印
////    private Logger log = LoggerFactory.getLogger("FileController");
////
////    // 文件上传 （可以多文件上传）
////    @PostMapping("/upload")
////    public Result fileUploads(HttpServletRequest request, @RequestParam("file") MultipartFile file) throws IOException {
////        // 得到格式化后的日期
////        String format = sdf.format(new Date());
////        // 获取上传的文件名称
////        String fileName = file.getOriginalFilename();
////        // 时间 和 日期拼接
////        String newFileName = format + "_" + fileName;
////        // 得到文件保存的位置以及新文件名
////        File dest = new File(filePath + newFileName);
////        try {
////            // 上传的文件被保存了
////            file.transferTo(dest);
////            // 打印日志
////            log.info("上传成功，当前上传的文件保存在 {}",filePath + newFileName);
////            // 自定义返回的统一的 JSON 格式的数据，可以直接返回这个字符串也是可以的。
////            return Result.succ("上传成功");
////        } catch (IOException e) {
////            log.error(e.toString());
////        }
////        // 待完成 —— 文件类型校验工作
////        return Result.fail("上传错误");
////    }
//
//
//
//}
//
